#ifndef SETTING_H
#define SETTING_H

#include "settingimpl.h"
#include <boost/noncopyable.hpp>

class SettingWithXML;

class Setting :
        protected boost::noncopyable
{
public:
    Setting();
    ~Setting();

    bool init(const std::string &sf);

    template< typename T >
    const T *settingData()
    {
        return m_impl->settingData< T >();
    }

private:
    SettingImpl< SettingWithXML > *  m_impl;
};

#endif // ANSETTING_H
